Projeto

Neste exercício irei trabalhar com o banco de dados do kaggle Forest Fires in Brazil que comporta o número de focos de incêndio em florestas brasileiras do ano de 1998 até 2017, os dados foram obtidos a partir do site oficial do governo brasileiro.

Objetivo

Neste exercício o ejetivo é encontrar padrões nos dados, além de trinar visualizações com mapas utilizando o pacote sf em conjunto com o pacote geobr, ambos da biblioteca R.

Encontrar padrões? Muito genérico! Então para me guiar neste trabalho irei realizar alguns questionamentos básicos, que espero poder responder no decorrer do exercício. São eles:

  1. Qual o Estado e região brasileirs com mais focos de incêndio em florestas?

  2. Qual o Estado e região com menos focos?

  3. Na região norte qual o estado com mais focos de incêndio?

  4. No estado do Pará qual o mês com mais focos de incêndios na média?

  5. No ano de 2010, qual foi o estado com mais focos de incêndio no Brasil?

  6. No ano de 2010, qual o mês com menos focos de incêndio no estado do Pará?

Nas perguntas preliminares fiz questão de incluir a região norte e o estado do Pará, bem, por que não?

Preparação

Ao tentar carregar no R a planilha obtida através do site oficial do governo brasileiro encontrei alguns problemas, uma vez que a pessoa que salvou o arquivo “.csv” incluiu aspas no começo e final de cada linha, o que fez com que a primeira coluna comece com aspas, o que não é um nome de variavel válido no R. Além das aspas a codificação do arquivo não era UTF-8, o que não facilitou minha vida. Abaixo mostro a tabela nenhum tratamento.

##     "Ano Estado  M\xeas N\xfamero Per\xedodo"
## 1: "1998   Acre Janeiro         0 01/01/1998"
## 2: "1999   Acre Janeiro         0 01/01/1999"
## 3: "2000   Acre Janeiro         0 01/01/2000"
## 4: "2001   Acre Janeiro         0 01/01/2001"
## 5: "2002   Acre Janeiro         0 01/01/2002"
## 6: "2003   Acre Janeiro        10 01/01/2003"

Aquisição dos dados

Depois de muito bater cabeça encontrei o função fread do pacote data.table que possui argumentos muito úteis para lidar com esse problema. Basicamente a função leu na codificação correta e removeu das variáveis as aspas que estavam causando erro na leitura. Bem simples, não?

Voltando aos dados! O banco de dados é composto por uma planilha com 5 colunas e 6454 linhas que contém o número de incẽndios, bem como o estados, mês e ano que esses incêndios ocorreram. Abaixo podemos ver a tabela após o tratamento inicial.

Tratamento dos dados

O processo de tratamento é descrito a seguir:

  • Há duas formas de trabalhar com datas aqui, a primeira é utilizar a coluna “Período.” que contém informações completas de mês e ano. A segunda forma é utilizar as colunas “X.Ano” e “Mês” que possuem as mesmas informações. Para simplificar as coisas irei trabalhar com as colunas “X.Ano” e “Mês” e por isso o primeiro passo da limpeza é excluir a coluna “Período.” (Fica de exercício fazer o oposto e tratar a coluna “Período.” com o pacote lubridate do tidyverse para extrair o mês e o ano).

  • Segundo passo é renomear minhas colunas para melhor gerais, retirar acentos e formatar a nomeação das variáveis.

  • Por último retirei da primeira e ultima coluna dos dados as aspas e mudei o tipo das variáveis para melhor trabalhar com os dados.

Além dos dados dos incêndios precisamos também precisamos das coordenadas geográficas para podermos visualizar os mapas, aqui foi utilizado o pacote geobr que possui as coordenadas do território brasileiro (Pais, regiões, estados e municípios) em um formato pronto para trabalhar com o pacote sf, o que facilitou bastante o trabalho. Neste trabalho utilizei o banco de dados contendo as informações dos estados e outro contendo as informações das regiões. Único tratamento que precisei fazer foi alterar a coluna que contém o nome dos estados para coincidir com a tabela dos dados. Abaixo o código com o tratamento dos dados:

Abaixo a tabela resultante:

Agora possuo três tabela diferentes (Dados de incêndio, Estados e Regiões) com todas as informações que preciso, então como próximo passo realizei a união das tabelas com o o pacote dplyr e o conjunto de junções join que ele possui.

Lembra dos questionamentos iniciais que fiz? Pois bem, para poder responde-los precisarei ser capaz de filtrar por ano, estado, mês e região. Então no final da união das tabela fiquei com três tabelas diferentes, para assim poder encontrar os dados correspondentes a cada pergunta. Abaixo o código para gerar cada uma das tabelas finais.

  • Tabela 1:

    • Aqui unimos a tabela “dados” com a “estados” para análise por ano, excluindo a coluna “MES” e calculando o numero de focos de incêndio por ano.
    foco_calor_ano <- dados |> 
      select(-MES) |> 
      with_groups(c(ANO, UF),
                  summarise,
                  ANO,UF,
                  N_calor = sum(N_calor)
                  ) |> 
      unique() |> 
      right_join(estados, by = c("UF" = "name_state")) |> 
      st_as_sf()
  • Tabela 2:

    • União da tabela “dados com estados” contudo sem excluir a tabela mês, assim agrupando os dados por mês obtemos o total de focos de incêndios mensais.
    foco_calor_mes <- dados |> 
      group_by(UF, ANO, MES) |> 
      summarise(UF, ANO,
                N_calor= sum(N_calor),
                MES = ordered(MES, levels = c("Janeiro", "Fevereiro", "Março", "Abril",
                                              "Maio", "Junho", "Julho", "Agosto",
                                              "Setembro", "Outubro", "Novembro",
                                              "Dezembro"))) |> 
      right_join(estados, by = c("UF" = "name_state")) |> 
      unique() |> 
      st_as_sf() 
  • Tabela 3:

    • Tabela resultante da união da tabela “regioes” com a tabela “dados”, excluindo a coluna “MES” e calculando o total por ano.
    foco_calor_regiao <- dados |>
      right_join(estados, by = c("UF" = "name_state")) |> 
      select(-c("abbrev_state", "code_state", "UF", "MES", "geom", "code_region")) |> 
      group_by(ANO, name_region) |> 
      mutate(N_calor = sum(N_calor)) |> 
      unique() |> 
      right_join(regioes, by = c("name_region" = "name_region")) |> 
      st_as_sf()

Análise

Depois de tratar os dados podemos enfim responder as perguntas iniciais.

  1. Qual o Estado e região brasileiras com mais focos de incêndio em florestas?

  2. Qual o Estado e região com menos focos?

  3. Na região norte qual o estado com mais focos de incêndio?

  4. No estado do Pará qual o mês com mais focos de incêndios na média?

  5. No ano de 2010, qual foi o estado com mais focos de incêndio no Brasil?

  6. No ano de 2010, qual o mês com menos focos de incêndio no estado do Pará?

Nas perguntas preliminares fiz questão de incluir a região norte e o estado do Pará, bem, por que não?